1. Field of the Invention
The present invention generally relates to read only memory (ROM) emulation. More particularly, the present invention relates to the field of retrieving start up instructions (e.g., bootstrap instructions) from a ROM emulation system.
2. Related Art
Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data in most areas of business, science, education and entertainment. Frequently, these advantageous results are realized through the use of information stored on a memory media and manipulated by a processing device. The number and type of memory storage medium can have significant impacts on the performance and cost of ah information processing system.
Memories usually consist of a location for storing information and a unique indicator or address. There are a variety of different types of memory and the type of memory usually dictates the features or characteristics of a memory. For example, non-volatile memory typically retains information when power is disconnected and a volatile memory typically loses information when power is disconnected. There is usually an inverse tradeoff between cost and performance and reaching an optimized balance is often difficult. For example, faster memories are usually more expensive per bit of storage capacity and slower memories are usually cheaper per bit of storage capacity. However, the function information is associated with (e.g., bootstrap operation) and the interactions involved in conveying the information to other components often constrains the choice of memory type.
A number of electronic systems include processors that are started by a bootstrap process. The bootstrap process typically causes a computer system to start executing instructions in a bootstrap loader program (e.g., a short machine language program). For example, personal computers often include bootstrap instructions in a nonvolatile memory, such as a read only memory (ROM), that are automatically executed upon startup. A bootstrap process is usually started by an indication of a triggering event such as the power is turned on for a computer system, a reset switch is pressed and/or a software restart instructions are executed. The bootstrap instructions typically include instructions for directing a number of different functions including hardware tests (e.g., power on self test, etc.), initializations, and routine input/output (“I/O”) functions (e.g., BIOS instructions). The bootstrap operations also typically include searching for the location of operating system instructions, loading the operating system instructions and passing control to the operating system.
Since bootstrap operations are usually performed when a system is started up the bootstrap information is typically stored in a non-volatile memory so that it is available even though the power was shut off prior to start up. In addition, the bootstrap information is typically stored in a memory that is compatible with a processor's requirement for relatively fast simple memory access for instruction fetches. For example, very old boot up approaches typically store boots strap instructions in a separate ROM memory. However, ROM memory can not typically be reprogrammed and it is very difficult to fix potential problems (e.g., software bugs). In addition, ROM memories are usually mask-programmed at the factory with adds considerable time to product deployment.
Systems tended to utilize NOR flash re-programmable ROM memory or electrically programmable read only memory (EPROM). However, NOR flash re-programmable ROM memory and EPROM memory is typically relatively expensive per bit of storage capacity. As systems become more complex, bootstrap activities can become very involved and take a significant amount of storage space. The additional storage space requirements can result in increased costs associated with relatively expensive ROM.
In addition, providing separate memories chips dedicated to separate functions such as storing bootstrap information usually involves consumption of system resources and added costs. Memories dedicated to single function instructions stored on separate chips typically occupy precious board space and need added connections on the board. Coordinating the connection and interaction with separate dedicated memory chips also usually complicates design efforts.